package LeetCodeTask;

import DataStructure.ListNode;

/*给出两个 非空 的链表用来表示两个非负的整数。其中，它们各自的位数是按照 逆序 的方式存储的，并且它们的每个节点只能存储 一位 数字。

        如果，我们将这两个数相加起来，则会返回一个新的链表来表示它们的和。

        您可以假设除了数字 0 之外，这两个数都不会以 0 开头。

        示例：

        输入：(2 -> 4 -> 3) + (5 -> 6 -> 4)
        输出：7 -> 0 -> 8
        原因：342 + 465 = 807*/


public class TwoNumAdd {


    public ListNode addTwoNum(ListNode l1,ListNode l2){
        return addTwoNumCir(l1,l2,0);


    }

    public ListNode addTwoNumCir(ListNode l1,ListNode l2,int carry){
        if(l1==null&&l2==null&&carry==0){
            return null;
        }
        ListNode temp = new ListNode();
        temp.val = ((l1== null ? 0:l1.val)+
                (l2==null? 0:l2.val)+(carry==0? 0:carry))%10;
        carry= ((l1== null ? 0:l1.val)+
                (l2==null? 0:l2.val)+(carry==0? 0:carry))/10;
        temp.next = addTwoNumCir(
                (l1!=null?l1.next:null)
                ,(l2!=null?l2.next:null),carry);
        return temp;

    }

}
